import { loadEnv, type UserConfig, type ConfigEnv } from "vite";
import { getCommonConfig, getCommonConfigAsync } from "./common-config";

/**
 * 构建用户配置
 * @param mode "" | ""
 * @returns
 */
export function buildUserConfig(mode: string): UserConfig {
    return {} as UserConfig;
}

export async function buildUserConfigAsync(mode: string) {
    return buildUserConfig(mode);
}

// function buildUserConfig(mode: string): UserConfig {
//     const MODE = mode ?? "development"
//     const isDevelopment = MODE === "development"
//     const viteEnv = loadViteEnv(MODE, EnvDir)
//     // console.log(mode)
//     // console.log(isDevelopment)
//     //
//     const result: UserConfig = {
//         appType: "spa", // APP 类型
//         root: AppRoot, // 项目根目录（index.html 文件所在的位置）
//         envDir: EnvDir, // 环境文件(.env.*)目录
//         cacheDir: CacheDir, // 存储缓存文件的目录
//         publicDir: PublicDir, // 静态资源服务的文件夹, 在构建期间复制到 build.outDir 的根目录
//         mode: MODE, // be overridden by the command line --mode option.
//         assetsInclude: [], // 包含的资产

//         resolve: {
//             alias: {
//                 ["#"]: SRC,
//                 ["vue-i18n"]: "vue-i18n/dist/vue-i18n.cjs.js" // 解决i8n警告 ...vue-i18n.esm-bundler.js
//             },
//             // 导入时想要省略的扩展名列表
//             extensions: [".mjs", ".js", ".mts", ".ts", ".jsx", ".tsx", ".json"]
//         },

//         css: {
//             // CSS 模块化
//             modules: {
//                 scopeBehaviour: "global" // 'global' | 'local'
//             },
//             // CSS 预处理器的选项
//             preprocessorOptions: {
//                 scss: {
//                     // 隐藏警告
//                     // Deprecation Warning: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0.
//                     api: "modern-compiler"
//                     // 预编译支持 scss
//                     // additionalData: `@use "~/styles/element/index.scss" as *;`,
//                     // additionalData: '@import "@/styles/variables.module.scss";',
//                     // javascriptEnabled: true, // 支持内联 JavaScript
//                 },
//                 less: {
//                     // 预编译支持less
//                     // additionalData: '@import "@/styles/variables.module.less";',
//                     // javascriptEnabled: true, // 支持内联 JavaScript
//                 }
//             },
//             // CSS sourcemaps enabled during dev
//             devSourcemap: true
//         },

//         plugins: [
//             vue(),
//             vueJsx(),
//             vueDevTools()
//             // AutoImport({
//             //     imports: ["vue"],
//             //     dts: "src/autotypes/auto-imports.d.ts",
//             //     resolvers: [ElementPlusResolver()],
//             // }),
//             // Components({
//             //     dts: "src/autotypes/auto-components.d.ts",
//             //     resolvers: [
//             //         // 自动导入 Element Plus 组件
//             //         ElementPlusResolver({ importStyle: "sass" }),
//             //     ],
//             // }),
//             // 按需导入图标
//             // Icons(),
//             // HTML
//             // createHtmlPlugin({
//             //     minify: true,
//             //     inject: {
//             //         data: {
//             //             app_title: viteEnv.VITE_APP_TITLE,
//             //         },
//             //     },
//             // }),
//             // 使用本地 svg 作为图标 icon
//             // createSvgIconsPlugin({
//             //     iconDirs: SvgIconDirs,
//             //     symbolId: "icon-[dir]-[name]",
//             // }),
//             // 静态资源拷贝
//             // viteStaticCopy({
//             //     targets: [{ src: ["LICENSE"], dest: "" }],
//             // }),
//         ],

//         /** Server Options */
//         server: {
//             host: "0.0.0.0", // 项目运行地址，此处代表 localhost
//             port: viteEnv.VITE_PORT, // 项目运行端口 default = 5173 ()
//             open: viteEnv.VITE_OPEN, // 运行 npm run dev 时是否自动打开浏览器
//             hmr: viteEnv.VITE_HMR, // 是否开启热加载
//             strictPort: false, // 设为 true 时若端口已被占用则会直接退出
//             https: undefined, // 启用 TLS + HTTP/2
//             cors: true, // 默认启用并允许任何源
//             proxy: undefined // 跨域代理配置,期望接收一个 { key: options }
//         },

//         build: {
//             outDir: OutDir, // 指定输出路径, 默认 dist
//             minify: isDevelopment ? false : "esbuild", // specify the minifier to use
//             assetsDir: OUT_ASSETS_FOLDER, // 指定生成静态资源的存放路径 (相对于 build.outDir)
//             cssCodeSplit: true, // 配置 CSS 代码拆分
//             sourcemap: false, // 构建后是否生成 source map 文件, default false
//             manifest: true, // 构建后将会生成 manifest.json 文件, 默认 false (OUT/.vite/manifest.json)
//             copyPublicDir: true, // 在构建阶段将 public 目录中的所有文件复制到 outDir 目录中
//             chunkSizeWarningLimit: 1500, // 调整区块大小警告限制 (in kbs).
//             rollupOptions: {
//                 input: undefined, // /path/to/your/index.html
//                 // 自定义底层的 Rollup 打包配置
//                 output: {
//                     entryFileNames: `${OUT_ASSETS_FOLDER}/js/entry-[name]-[hash].js`,
//                     chunkFileNames: `${OUT_ASSETS_FOLDER}/js/chunk-[name]-[hash].js`,
//                     assetFileNames: `${OUT_ASSETS_FOLDER}/[ext]/[name]-[hash].[ext]`,
//                     // https://rollupjs.org/guide/en/#outputmanualchunks
//                     manualChunks: {
//                         // "group-hooks": ["./src/hooks"],
//                         // "group-widgets": ["./src/widgets"],
//                         // "group-utils": ["./src/utils"],
//                     }
//                 },
//                 external: []
//             }
//         },

//         esbuild: {
//             // 打包去除 console.log 等调式信息
//             pure: viteEnv.VITE_DROP_CONSOLE ? ["console.log", "console.trace"] : []
//         },

//         // 自定义
//         define: {
//             DEMO_BOOL: true,
//             DEMO_NUMBER: 20,
//             DEMO_ARRAY: [1, 2, 3],
//             DEMO_OBJECT: { name: "asc" },
//             DEMO_STRING: JSON.stringify("This is demo string...")
//         }
//     }

//     return result as UserConfig
// }
